#pragma once

#include "stdafx.h"
#include "Vector3D.h"

class Tile;
class Object;

class Map
{
public:
	Map(void);
	~Map(void);

	Tile* get_tile(unsigned int x, unsigned int y, unsigned int z);
	Tile* get_tile(const Vector3D<unsigned int>& pos);

	bool move_to(Object& Obj, const Vector3D<unsigned int>& Dest);
	
protected:
	unsigned int make_index(const Vector3D<unsigned int>& pos) const;

private:
	typedef std::map<unsigned int, Tile*> TILE_MAP;
	Vector3D<unsigned int>	Size;
	TILE_MAP				Tiles;
};
